iT邦幫忙

2024 iThome 鐵人賽

DAY 1
1

前言

在這個時代,大型網站設計正朝著微服務架構的方向快速發展。微服務不僅改變了我們構建和部署應用的方式,還賦予了開發者更多的靈活性與可擴展性。隨著微服務開發逐漸成為主流,許多新的設計框架與概念不斷推陳出新。本系列旨在帶領讀者深入了解現代微服務的宏觀架構,並引導讀者設計與實作一個微服務系統。

閱讀前的背景知識

  1. .NET C# 的基礎知識
  2. Docker 容器化的基礎知識

主題

既然是實作,總要有個題目對吧?我們的實戰題目就是:

To-Do List System 待辦清單系統

未來我們將從概念介紹、架構設計、實作微服務到最後的容器化,一步步帶領大家完成這個系統。

成品大概會長這樣:

https://ithelp.ithome.com.tw/upload/images/20241013/20168953lfH2hg3rH5.png

https://ithelp.ithome.com.tw/upload/images/20241013/20168953NDxaYpfmQR.png

大綱

第一章:概念介紹與系統設計

Day 01 - 前言與大綱
Day 02 - 微服務架構:從單體到分散式的演進、優勢與挑戰
Day 03 - 探討領域驅動設計(Domain-Driven Design)
Day 04 - Clean Architecture 與 DDD 的架構設計
Day 05 - DDD Strategic Design:To-Do List 系統需求分析與架構規劃
Day 06 - DDD Tactical Design:物件設計到資料庫格式
Day 07 - 微服務基本功:gRPC 與 GraphQL
Day 08 - 微服務架構:從概念到實踐
Day 09 - 開發工具選用:工欲善其事,必先裝套件

第二章:DDD 基礎實作

Day 10 - 微服務專案建置與 docker-compose
Day 11 - 從零開始:構建你的 DDD Seedwork
Day 12 - 深入 DDD 核心:Account 和 Todo 服務的 Aggregate 實作

第三章:微服務 gRPC 功能實作

Day 13 - Account Service 實作:Register 帳號註冊
Day 14 - Account Service 實作:Login 使用者登入
Day 15 - Account Service 實作:Authentication JWT 製作與認證
Day 16 - Account Infrastructure 實作:資料庫建置與 ORM 開發
Day 17 - Todo Service 實作:一次完成 Create List 和 Create Item
Day 18 - Todo Service 實作:利用 Quick Fix 快速完成 Finish/Remove Functions
Day 19 - Todo Infrastructure 實作:Repository Pattern 介紹
Day 20 - Todo Infrastructure 實作:複習 Entity Framework

第四章:微服務 Event、Gateway 和 GraphQL

Day 21 - Mediator Pattern - MediatR 和 Domain Event 實作
Day 22 - Integration Event:RabbitMQ 和 Producer 開發實作
Day 23 - Integration Event:RabbitMQ 與 Consumer 開發實作
Day 24 - BFF Gateway 實作:從 gRPC 到 REST API
Day 25 - BFF Gateway 實作:JWT Bearer Authentication 與 Authorization
Day 26 - 打造靈活高效的 GraphQL 服務:從設計到實作
Day 27 - Backend 的最後一哩路:Gateway 與 GraphQL Stitching

第七章:前端與容器化部屬

Day 28 - Cursor AI 魔法:一鍵打造現代化 To-Do List 網頁應用
Day 29 - 收官之戰:端口梳理、容器部署與架構總覽
Day 30 - 結束與開始

第一天時的目標設定

上面是我實際完成後的大綱,現在讓我們與第一天給自己的期許做個對比:

  1. Microservices 介紹
  2. Domain-Driven Design 介紹
  3. Clean Architecture 介紹
  4. Domain-Driven Design 實戰設計
  5. 系統架構規劃
  6. gRPC 介紹
  7. 工具介紹(VS Code、Docker)
  8. 建置專案與環境
  9. Microservices 實作
  10. GraphQL 介紹
  11. GraphQL 實作
  12. BFF Gateway 實作
  13. 使用 AI 實作一個前端頁面
  14. 完結
  15. 完結之後 - 使用 Minikube 部署自己的微服務
  16. 完結之後 - Health Check 導入
  17. 完結之後 - OpenTelemetry 可觀測性導入
  18. 完結之後 - Prometheus 導入

我很開心最後能達成最初的設定,雖然過程中遇到了許多困難也曾感到迷茫,但最終都一一克服了。下次我一定要提早準備內容!

後話

關於微服務這種不斷進步的題目,我認為三十篇文章要介紹完這麼多內容幾乎是不可能的。其中許多技術都值得用一整輪鐵人賽來深入剖析。因此,這系列打算以高層次的架構來解析一個簡單的實作系統,並手把手地帶領各位完成屬於自己的微服務系統。希望讀者在日後開發或研究相關技術時不會迷失方向,能更清楚地了解全貌以及未來開發的方向。

其實,實際的應用環境往往複雜且充滿挑戰,業務需求常常迫使你無法採用最佳解,即使有最佳解,手邊的資源也可能只能讓你選擇次佳方案。本系列只是入門,是一種自我挑戰,也希望能對讀者有一絲絲的幫助。


下一篇
Day 02 - 微服務架構:從單體到分散式的演進、優勢與挑戰
系列文
DDD? Clean Architecture? Microservices? 帶你用.NET實作打造一個現代化微服務!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言